package com.hu.hrm.service.impl;

import com.hu.hrm.feignclients.RedisFeignClient;
import com.hu.hrm.service.IVerifyCodeService;
import com.hu.hrm.util.VerifyCodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.io.IOException;
import java.util.UUID;

@Service
public class VerifyCodeServiceImpl implements IVerifyCodeService {

    //生成此实现类的时候注意标签service

    @Autowired
    private RedisFeignClient redisFeignClient ;

    //生成验证码
    @Override
    public String createImageCode(String imageCodeKey) throws IOException {
        //1.判断参数
        if(!StringUtils.hasLength(imageCodeKey)){
            throw new RuntimeException("无效的（前端）imageCodeKey");
        }
        //2.使用UUID生成验证码的值
        String imageCodeValue = UUID.randomUUID().toString().substring(0,4);

        //3.以imageCodeKey为key把验证码的值存储到Redis （注意设置过期时间）
        //这里前端的imageCodeKey 作为key  生成的imageCodeValue作为redis的值
        redisFeignClient.setex(imageCodeKey,300,imageCodeValue);

        //4.把验证码的值合并成图片
        //5.把图片进行base64编码
        //直接到工具VerifyCodeUtils 准备一个对应的方法（我们传了验证码，直接写进去生成出图片就可以）


        //6.返回编码后的字符串
        return VerifyCodeUtils.verifyCode(135,40,imageCodeValue);
    }

}
